import { getAction, postAction } from '@/api/controller';

interface RegistrationOrderSaveReqVO {
  /**
   * 挂号日期
   */
  appointmentDate: string
  /**
   * 诊室ID
   */
  clinicRoomId: number
  /**
   * 科室ID
   */
  departmentId: number
  /**
   * 科室名称
   */
  departmentName: string
  /**
   * 医生ID
   */
  doctorId: number
  /**
   * 医生姓名
   */
  doctorName: string
  /**
   * 患者ID
   */
  patientId: number
  /**
   * 患者姓名
   */
  patientName: string
  /**
   * 支付类型（0:现金 1:微信 2:支付宝 3:银行卡 4:医保）
   */
  paymentType?: number
  /**
   * 挂号费用ID
   */
  registrationFeeId?: number
  /**
   * 时间段（格式：HH:mm-HH:mm）
   */
  timePeriod: string
  /**
   * 挂号时间ID
   */
  appointmentTimeId: number
}

export interface RegistrationOrderSaveResVO {
  /**
   * 订单编号
   */
  orderNo: string

  /**
   * 支付订单ID
   */
  payOrderId: number
}

export interface RegistrationOrderRespVO {
  /**
   * 挂号日期
   */
  appointmentDate?: string
  /**
   * 诊室ID
   */
  clinicRoomId?: number
  /**
   * 诊室名称
   */
  clinicRoomName?: string
  /**
   * 创建时间
   */
  createTime?: string
  /**
   * 科室ID
   */
  departmentId?: number
  /**
   * 科室名称
   */
  departmentName?: string
  /**
   * 科室地址
   */
  departmentAddress?: string
  /**
   * 医生ID
   */
  doctorId?: number
  /**
   * 医生姓名
   */
  doctorName?: string
  /**
   * 主键ID
   */
  id?: number
  /**
   * 操作人姓名
   */
  operatorName?: string
  /**
   * 挂号订单号（YYYYMMDDHH24MISS+8位随机数）
   */
  orderNo?: string
  /**
   * 订单状态（0:有效 1:完成 2:取消）
   */
  orderStatus?: number
  /**
   * 患者ID
   */
  patientId?: number
  /**
   * 患者姓名
   */
  patientName?: string
  /**
   * 支付状态（0:未支付 1:已支付 2:已过期 3:已取消）
   */
  paymentStatus?: number
  /**
   * 支付时间
   */
  paymentTime?: string
  /**
   * 支付类型（0:现金 1:微信 2:支付宝 3:银行卡 4:医保）
   */
  paymentType?: number
  /**
   * 挂号费用
   */
  registrationFee?: number
  /**
   * 挂号类型（0:普通号 1:专家号 2:特需号）
   */
  registrationType?: number
  /**
   * 时间段（格式：HH:mm-HH:mm）
   */
  timePeriod?: string
  professionalTitle?: string
}

/**
 * 挂号订单
 */
export const RegistrationOrderApi = {
  /**
   * 创建订单
   * @param data
   */
  create: (params: RegistrationOrderSaveReqVO) => {
    return postAction<RegistrationOrderSaveResVO>('/healthcare/registration-order/create', params);
  },

  /**
   * 根据订单编号获取订单详情
   * @param orderNo
   * @returns
   */
  getRegistrationOrderByOrderNo: (orderNo: string) => {
    return getAction<RegistrationOrderRespVO>('/healthcare/registration-order/getRegistrationOrderByOrderNo', {
      orderNo
    });
  }
};
